using CodeSaude.Domain.Entities;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;

namespace CodeSaude.Infrastructure.Data.EntityConfig
{
    public class pedido_laboratorioMap : EntityTypeConfiguration<pedido_laboratorio>
    {
        public pedido_laboratorioMap()
        {
            // Primary Key
            this.HasKey(t => t.id);

            // Properties
            this.Property(t => t.codlotelab)
                .IsRequired()
                .HasMaxLength(100);

            this.Property(t => t.cd_unidade)
                .IsRequired()
                .HasMaxLength(45);

            this.Property(t => t.cd_atendimento)
                .IsRequired()
                .HasMaxLength(45);

            this.Property(t => t.cd_requisicao)
                .IsRequired()
                .HasMaxLength(45);

            this.Property(t => t.peso)
                .HasMaxLength(5);

            this.Property(t => t.altura)
                .HasMaxLength(5);

            this.Property(t => t.tp_conselho)
                .HasMaxLength(45);

            this.Property(t => t.nr_conselho)
                .HasMaxLength(45);

            this.Property(t => t.nm_solicitante)
                .HasMaxLength(200);

            this.Property(t => t.uf_conselho)
                .HasMaxLength(2);

            this.Property(t => t.cd_pac)
                .IsRequired()
                .HasMaxLength(45);

            this.Property(t => t.prontuario)
                .IsRequired()
                .HasMaxLength(100);

            this.Property(t => t.nm_paciente)
                .IsRequired()
                .HasMaxLength(200);

            this.Property(t => t.sexo)
                .IsRequired()
                .HasMaxLength(1);

            this.Property(t => t.endereco)
                .HasMaxLength(100);

            this.Property(t => t.bairro)
                .HasMaxLength(100);

            this.Property(t => t.municipio)
                .HasMaxLength(100);

            this.Property(t => t.uf)
                .HasMaxLength(2);

            this.Property(t => t.cep)
                .HasMaxLength(15);

            this.Property(t => t.telefone)
                .HasMaxLength(20);

            this.Property(t => t.cod_exa)
                .IsRequired()
                .HasMaxLength(10);

            this.Property(t => t.importado)
                .HasMaxLength(1);

            this.Property(t => t.dt_importado)
                .HasMaxLength(45);

            this.Property(t => t.coletado)
                .HasMaxLength(1);

            // Table & Column Mappings
            this.ToTable("pedido_laboratorio");
            this.Property(t => t.id).HasColumnName("id");
            this.Property(t => t.data).HasColumnName("data");
            this.Property(t => t.codlotelab).HasColumnName("codlotelab");
            this.Property(t => t.dt_pedido).HasColumnName("dt_pedido");
            this.Property(t => t.cd_unidade).HasColumnName("cd_unidade");
            this.Property(t => t.cd_atendimento).HasColumnName("cd_atendimento");
            this.Property(t => t.cd_requisicao).HasColumnName("cd_requisicao");
            this.Property(t => t.peso).HasColumnName("peso");
            this.Property(t => t.altura).HasColumnName("altura");
            this.Property(t => t.tp_conselho).HasColumnName("tp_conselho");
            this.Property(t => t.nr_conselho).HasColumnName("nr_conselho");
            this.Property(t => t.nm_solicitante).HasColumnName("nm_solicitante");
            this.Property(t => t.uf_conselho).HasColumnName("uf_conselho");
            this.Property(t => t.cd_pac).HasColumnName("cd_pac");
            this.Property(t => t.prontuario).HasColumnName("prontuario");
            this.Property(t => t.nm_paciente).HasColumnName("nm_paciente");
            this.Property(t => t.sexo).HasColumnName("sexo");
            this.Property(t => t.dt_nasc).HasColumnName("dt_nasc");
            this.Property(t => t.endereco).HasColumnName("endereco");
            this.Property(t => t.bairro).HasColumnName("bairro");
            this.Property(t => t.municipio).HasColumnName("municipio");
            this.Property(t => t.uf).HasColumnName("uf");
            this.Property(t => t.cep).HasColumnName("cep");
            this.Property(t => t.telefone).HasColumnName("telefone");
            this.Property(t => t.cod_exa).HasColumnName("cod_exa");
            this.Property(t => t.importado).HasColumnName("importado");
            this.Property(t => t.dt_importado).HasColumnName("dt_importado");
            this.Property(t => t.coletado).HasColumnName("coletado");
        }
    }
}
